home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume8 / smail2 / part02 < prev    next >
Encoding:
Internet Message Format  |  1987-02-16  |  56.7 KB

  1. Subject:  v08i068:  Smail, release 2.3, Part02/05
  2. Newsgroups: mod.sources
  3. Approved: mirror!rs
  4.  
  5. Submitted by:  Larry Auton <lda@clyde.att.com>
  6. Mod.sources: Volume 8, Issue 68
  7. Archive-name: smail2/Part02
  8.  
  9. #! /bin/sh
  10. # This is a shell archive.  Remove anything before this line,
  11. # then unpack it by saving it in a file and typing "sh file".
  12. # If all goes well, you will see the message "End of shell archive."
  13. # Contents:  doc/domain.mm doc/paths.8 doc/smail.8 doc/rfc976.mm
  14. #   src/patchlevel MANIFEST
  15. # Wrapped by rs@mirror on Mon Feb  9 17:09:59 1987
  16. PATH=/bin:/usr/bin:/usr/ucb; export PATH
  17. echo shar: extracting "'doc/domain.mm'" '(19036 characters)'
  18. if test -f 'doc/domain.mm' ; then 
  19.   echo shar: will not over-write existing file "'doc/domain.mm'"
  20. else
  21. sed 's/^X//' >doc/domain.mm <<'@//E*O*F doc/domain.mm//'
  22. X.TL
  23. XWhat is a Domain?
  24. X.AU "Mark R. Horton" "" CB 59473 4276 2C-249 "(cbosgd!mark)"
  25. X.AS 0 10
  26. XIn the past, electronic mail has used many different kinds of syntax,
  27. Xnaming a computer
  28. Xand a login name on that computer.  A new system, called ``domains'',
  29. Xis becoming widely used, based on a heirarchical naming scheme.
  30. XThis paper is intended as a quick introduction to domains.  For more details,
  31. Xyou should read some of the documents referenced at the end.
  32. X.AE
  33. X.MT 4 1
  34. X.H 1 "Introduction"
  35. X.P
  36. XWhat exactly are domains?  Basically, they are a way of looking at the world as
  37. Xa heirarchy (tree structure).  You're already used to using two tree
  38. Xworld models that work pretty well: the telephone system and the post
  39. Xoffice.  Domains form a similar heirarchy for the electronic mail
  40. Xcommunity.
  41. X.P
  42. XThe post office divides the world up geographically, first into
  43. Xcountries, then each country divides itself up, those units subdivide,
  44. Xand so on.  One such country, the USA, divides into states, which divide
  45. Xinto counties (except for certain states, like Louisiana, which divide
  46. Xinto things like parishes), the counties subdivide into cities, towns,
  47. Xand townships, which typically divide into streets, the streets divide
  48. Xinto lots with addresses, possibly containing room and apartment
  49. Xnumbers, the then individual people at that address.  So you have an
  50. Xaddress like
  51. X.DS
  52. X    Mark Horton
  53. X    Room 2C-249
  54. X    6200 E. Broad St.
  55. X    Columbus, Ohio, USA
  56. X.DE
  57. X(I'm ignoring the name ``AT&T Bell Laboratories'' and the zip code, which
  58. Xare redundant information.)  Other countries may subdivide differently,
  59. Xfor example many small countries do not have states.
  60. X.P
  61. XThe telephone system is similar.  Your full phone number might look
  62. Xlike 1-614-860-1234 x234 This contains, from left to right, your
  63. Xcountry code (Surprise!  The USA has country code ``1''!),
  64. Xarea code 614 (Central Ohio), 860 (a prefix in the Reynoldsburg
  65. XC.O.), 1234 (individual phone number), and extension 234.  Some phone
  66. Xnumbers do not have extensions, but the phone system in the USA has
  67. Xstandardized on a 3 digit area code, 3 digit prefix, and 4 digit phone
  68. Xnumber.  Other countries don't use this standard, for example, in the
  69. XNetherlands a number might be +46 8 7821234 (country code 46, city code
  70. X8, number 7821234), in Germany +49 231 7551234, in Sweden +31 80
  71. X551234, in Britain +44 227 61234 or +44 506 411234.  Note that the
  72. Xcountry and city codes and telephone numbers are not all the same
  73. Xlength, and the punctuation is different from our North American
  74. Xnotation.  Within a country, the length of the telephone number might
  75. Xdepend on the city code.  Even within the USA, the length of extensions
  76. Xis not standardized: some places use the last 4 digits of the telephone
  77. Xnumber for the extension, some use 2 or 3 or 4 digit extensions you
  78. Xmust ask an operator for.  Each country has established local
  79. Xconventions.  But the numbers are unambigous when dialed from
  80. Xleft-to-right, so as long as there is a way to indicate when you are
  81. Xdone dialing, there is no problem.
  82. X.P
  83. XA key difference in philosophy between the two systems is evident from
  84. Xthe way addresses and telephone numbers are written.  With an address,
  85. Xthe most specific information comes first, the least specific last.
  86. X(The ``root of the tree'' is at the right.)  With telephones, the least
  87. Xspecific information (root) is at the left.  The telephone system was
  88. Xdesigned for machinery that looks at the first few digits, does
  89. Xsomething with it, and passes the remainder through to the next level.
  90. XThus, in effect, you are routing your call through the telephone
  91. Xnetwork.  Of course, the exact sequence you dial depends on where you
  92. Xare dialing from - sometimes you must dial 9 or 8 first, to get an
  93. Xinternational dialtone you must dial 011, if you are calling locally
  94. Xyou can (and sometimes must) leave off the 1 and the area code.  (This
  95. Xmakes life very interesting for people who must design a box to call
  96. Xtheir home office from any phone in the world.)  This type of address
  97. Xis called a ``relative address'', since the actual address used depends
  98. Xon the location of the sender.
  99. X.P
  100. XThe postal system, on the other hand, allows you to write the same
  101. Xaddress no matter where the sender is.  The address above will get to
  102. Xme from anywhere in the world, even private company mail systems.  Yet,
  103. Xsome optional abbreviations are possible - I can leave off the USA if
  104. XI'm mailing within the USA; if I'm in the same city as the address, I
  105. Xcan usually just say ``city'' in place of the last line.  This type of
  106. Xaddress is called an ``absolute address'', since the unabbreviated form
  107. Xdoes not depend on the location of the sender.
  108. X.P
  109. XThe ARPANET has evolved with a system of absolute addresses:
  110. X``user@host'' works from any machine.  The UUCP network has evolved with
  111. Xa system of relative addresses: ``host!user'' works from any machine with
  112. Xa direct link to ``host'', and you have to route your mail through the
  113. Xnetwork to find such a machine.  In fact, the ``user@host'' syntax has
  114. Xbecome so popular that many sites run mail software that accepts this
  115. Xsyntax, looks up ``host'' in a table, and sends it to the appropriate
  116. Xnetwork for ``host''.  This is a very nice user interface, but it only
  117. Xworks well in a small network.  Once the set of allowed hosts grows
  118. Xpast about 1000 hosts, you run into all sorts of administrative
  119. Xproblems.
  120. X.P
  121. XOne problem is that it becomes nearly impossible to keep a table of
  122. Xhost names up to date.  New machines are being added somewhere in the
  123. Xworld every day, and nobody tells you about them.  When you try to send
  124. Xmail to a host that isn't in your table (replying to mail you just got
  125. Xfrom a new host), your mailing software might try to route it to a
  126. Xsmarter machine, but without knowing which network to send it to, it
  127. Xcan't guess which smarter machine to forward to.  Another problem is
  128. Xname space collision - there is nothing to prevent a host on one
  129. Xnetwork from choosing the same name as a host on another network.  For
  130. Xexample, DEC's ENET has a ``vortex'' machine, there is also one on UUCP.
  131. XBoth had their names long before the two networks could talk to each
  132. Xother, and neither had to ask the other network for permission to use
  133. Xthe name.  The problem is compounded when you consider how many
  134. Xcomputer centers name their machines ``A'', ``B'', ``C'', and so on.
  135. X.P
  136. XIn recognition of this problem, ARPA has established a new way to name
  137. Xcomputers based on domains.  The ARPANET is pioneering the domain
  138. Xconvention, and many other computer networks are falling in line, since
  139. Xit is the first naming convention that looks like it really stands a
  140. Xchance of working.  The MILNET portion of ARPANET has a domain, CSNET
  141. Xhas one, and it appears that Digital, AT&T, and UUCP will be using
  142. Xdomains as well.  Domains look a lot like postal addresses, with a
  143. Xsimple syntax that fits on one line, is easy to type, and is easy for
  144. Xcomputers to handle.  To illustrate, an old routed UUCP address might
  145. Xread ``sdcsvax!ucbvax!allegra!cbosgd!mark''.  The domain version of this
  146. Xmight read ``mark@d.osg.cb.att.uucp''.  The machine is named
  147. Xd.osg.cb.att.uucp (UUCP domain, AT&T company, Columbus site, Operating
  148. XSystem Group project, fourth machine.)  Of course, this example is
  149. Xsomewhat verbose and contrived; it illustrates the heirarchy well, but
  150. Xmost people would rather type something like ``cbosgd.att.uucp'' or even
  151. X``cbosgd.uucp'', and actual domains are usually set up so that you
  152. Xdon't have to type very much.
  153. X.P
  154. XYou may wonder why the single @ sign is present, that is, why the above
  155. Xaddress does not read ``mark.d.osg.cb.att.uucp''.  In fact, it was
  156. Xoriginally proposed in this form, and some of the examples in RFC819 do
  157. Xnot contain an @ sign.  The @ sign is present because some ARPANET
  158. Xsites felt the strong need for a divider between the domain, which
  159. Xnames one or more computers, and the left hand side, which is subject
  160. Xto whatever interpretation the domain chooses.  For example, if the ATT
  161. Xdomain chooses to address people by full name rather than by their
  162. Xlogin, an address like ``Mark.Horton@ATT.UUCP'' makes it clear that some
  163. Xmachine in the ATT domain should interpret the string ``Mark.Horton'',
  164. Xbut if the address were ``Mark.Horton.ATT.UUCP'', routing software might
  165. Xtry to find a machine named ``Horton'' or ``Mark.Horton''.  (By the way,
  166. Xcase is ignored in domains, so that ``ATT.UUCP'' is the same as
  167. X``att.uucp''.  To the left of the @ sign, however, a domain can interpret
  168. Xthe text any way it wants; case can be ignored or it can be
  169. Xsignificant.)
  170. X.P
  171. XIt is important to note that
  172. X.B "domains are not routes" .
  173. XSome people look
  174. Xat the number of !'s in the first example and the number of .'s in the
  175. Xsecond, and assume the latter is being routed from a machine called
  176. X``uucp'' to another called ``att'' to another called ``cb'' and so on.  While
  177. Xit is possible to set up mail routing software to do this, and indeed
  178. Xin the worst case, even without a reasonable set of tables, this method
  179. Xwill always work, the intent is that ``d.osg.cb.att.uucp'' is the name of
  180. Xa machine, not a path to get there.  In particular, domains are
  181. Xabsolute addresses, while routes depend on the location of the sender.
  182. XSome subroutine is charged with figuring out, given a domain based
  183. Xmachine name, what to do with it.  In a high quality environment like the
  184. XARPA Internet, it can query a table or a name server, come up with a 32
  185. Xbit host number, and connect you directly to that machine.  In the UUCP
  186. Xenvironment, we don't have the concept of two processes on arbitrary
  187. Xmachines talking directly, so we forward mail one hop at a time until
  188. Xit gets to the appropriate destination.  In this case, the subroutine
  189. Xdecides if the name represents the local machine, and if not, decides
  190. Xwhich of its neighbors to forward the message to.
  191. X.H 1 "What is a Domain?"
  192. X.P
  193. XSo, after all this background, we still haven't said what a domain is.
  194. XThe answer (I hope it's been worth the wait) is that a domain is a
  195. Xsubtree of the world tree.  For example, ``uucp'' is a top level domain
  196. X(that is, a subtree of the ``root''.) and represents all names and
  197. Xmachines beneath it in the tree.  ``att.uucp'' is a subdomain of ``uucp'',
  198. Xrepresenting all names, machines, and subdomains beneath ``att'' in the
  199. Xtree.  Similarly for ``cb.att.uucp'', ``osg.cb.att.uucp'',
  200. Xand even ``d.osg.cb.att.uucp'' (although ``d.osg.cb.att.uucp'' is a
  201. X``leaf'' domain, representing only the one machine).
  202. X.P
  203. XA domain has certain properties.  The key property is that it has a
  204. X``registry''.  That is, the domain has a list of the names of all
  205. Ximmediate subdomains, plus information about how to get to each one.
  206. XThere is also a contact person for the domain.  This person is
  207. Xresponsible for the domain, keeping the registry up-to-date, serving as
  208. Xa point of contact for outside queries, and setting policy requirements
  209. Xfor subdomains.  Each subdomain can decide who it will allow to have
  210. Xsubdomains, and establish requirements that all subdomains must meet to
  211. Xbe included in the registry.  For example, the ``cb'' domain might
  212. Xrequire all subdomains to be physically located in the AT&T building in
  213. XColumbus.
  214. X.P
  215. XARPA has established certain requirements for top level domains.  These
  216. Xrequirements specify that there must be a list of all subdomains and
  217. Xcontact persons for them, a responsible person who is an authority for
  218. Xthe domain (so that if some site does something bad, it can be made to
  219. Xstop), a minimum size (to prevent small domains from being top level),
  220. Xand a pair of nameservers (for redundancy) to provide a
  221. Xdirectory-assistance facility.  Domains can be more lax about the
  222. Xrequirements they place on their subdomains, making it harder to be a
  223. Xtop level domain than somewhere lower in the tree.  Of course, if you
  224. Xare a subdomain, your parent is responsible for you.
  225. X.P
  226. XOne requirement that is NOT present is for unique parents.  That is, a
  227. Xmachine (or an entire subdomain) need not appear in only one place in
  228. Xthe tree.  Thus, ``cb'' might appear both in the ``att'' domain, and in the
  229. X``ohio'' domain.  This allows domains to be structured more flexibly than
  230. Xjust the simple geography used by the postal service and the telephone
  231. Xcompany; organizations or topography can be used in parallel.
  232. X(Actually, there are a few instances where this is done in the postal
  233. Xservice [overseas military mail] and the telephone system [prefixes can
  234. Xappear in more than one area code, e.g. near Washington D.C., and
  235. XSilicon Valley].)  It also allows domains to split or join up, while
  236. Xremaining upward compatible with their old addresses.
  237. X.P
  238. XDo all domains represent specific machines?  Not necessarily.  It's
  239. Xpretty obvious that a full path like ``d.cbosg.att.uucp'' refers to
  240. Xexactly one machine.  The OSG domain might decide that ``cbosg.att.uucp''
  241. Xrepresents a particular gateway machine.  Or it might decide that it
  242. Xrepresents a set of machines, several of which might be gateways.  The
  243. X``att.uucp'' domain might decide that several machines, ``ihnp4.uucp'',
  244. X``whgwj.uucp'', and ``hogtw.uucp'' are all entry points into ``att.uucp''.  Or
  245. Xit might decide that it just represents a spot in the name space, not a
  246. Xmachine.  For example, there is no machine corresponding to ``arpa'' or
  247. X``uucp'', or to the root.  Each domain decides for itself.  The naming
  248. Xspace and the algorithm for getting mail from one machine to another
  249. Xare not closely linked - routing is up to the mail system to figure
  250. Xout, with or without help from the structure of the names.
  251. X.P
  252. XThe domain syntax does allow explicit routes, in case you want to
  253. Xexercise a particular route or some gateway is balking.  The syntax is
  254. X``@dom\d1\u,@dom\d2\u,...,@dom\dn\u:user@domain'', for example,
  255. X@ihnp4.UUCP,@ucbvax.UUCP,:joe@NIC.ARPA, forcing it to be routed through
  256. Xdom\d1\u, dom\d2\u, ..., dom\dn\u, and from domn sent to the final address.
  257. XThis behaves exactly like the UUCP ! routing syntax, although it is somewhat
  258. Xmore verbose.
  259. X.P
  260. XBy the way, you've no doubt noticed that some forms of electronic
  261. Xaddresses read from left-to-right (cbosgd!mark), others read from
  262. Xright-to-left (mark@Berkeley).  Which is better?  The real answer here
  263. Xis that it's a religious issue, and it doesn't make much difference.
  264. Xleft-to-right is probably a bit easier for a computer to deal with
  265. Xbecause it can understand something on the left and ignore the
  266. Xremainder of the address.  (While it's almost as easy for the program
  267. Xto read from right-to-left, the ease of going from left-to-right was
  268. Xprobably in the backs of the minds of the designers who invented
  269. Xhost:user and host!user.)
  270. X.P
  271. XOn the other hand, I claim that user@host is
  272. Xeasier for humans to read, since people tend to start reading from the
  273. Xleft and quit as soon as they recognize the login name of the person.
  274. XAlso, a mail program that prints a table of headers may have to
  275. Xtruncate the sender's address to make it fit in a fixed number of
  276. Xcolumns, and it's probably more useful to read ``mark@d.osg.a'' than
  277. X``ucbvax!sdcsv''.
  278. X.P
  279. XThese are pretty minor issues, after all, humans can
  280. Xadapt to skip to the end of an address, and programs can truncate on
  281. Xthe left.  But the real problem is that if the world contains BOTH
  282. Xleft-to-right and right-to-left syntax, you have ambiguous addresses
  283. Xlike x!y@z to consider.  This single problem turns out to be a killer,
  284. Xand is the best single reason to try to stamp out one in favor of the
  285. Xother.
  286. X.H 1 "So why are we doing this, anyway?"
  287. X.P
  288. XThe current world is full of lots of interesting kinds of mail syntax.
  289. XThe old ARPA ``user@host'' is still used on the ARPANET by many systems.
  290. XExplicit routing can sometimes by done with an address like
  291. X``user@host2@host1'' which sends the mail to host1 and lets host1
  292. Xinterpret ``user@host2''.  Addresses with more than one @ were made
  293. Xillegal a few years ago, but many ARPANET hosts depended on them, and
  294. Xthe syntax is still being used.  UUCP uses ``h1!h2!h3!user'', requiring
  295. Xthe user to route the mail.  Berknets use ``host:user'' and do not allow
  296. Xexplicit routing.
  297. X.P
  298. XTo get mail from one host to another, it had to be routed through
  299. Xgateways.  Thus, the address ``csvax:mark@Berkeley'' from the ARPANET
  300. Xwould send the mail to Berkeley, which would forward it to the Berknet
  301. Xaddress csvax:mark.  To send mail to the ARPANET from UUCP, an address
  302. Xsuch as ``ihnp4!ucbvax!sam@foo-unix'' would route it through ihnp4 to
  303. Xucbvax, which would interpret ``sam@foo-unix'' as an ARPANET address and
  304. Xpass it along.  When the Berknet-UUCP gateway and Berknet-ARPANET
  305. Xgateway were on different machines, addresses such as
  306. X``csvax:ihnp4!ihnss!warren@Berkeley'' were common.
  307. X.P
  308. XAs you can see, the combination of left-to-right UUCP syntax and
  309. Xright-to-left ARPANET syntax makes things pretty complex.  Berknets are
  310. Xgone now, but there are lots of gateways between UUCP and the ARPANET
  311. Xand ARPANET-like mail networks.  Sending mail to an address for which
  312. Xyou only know a path from the ARPANET onto UUCP is even harder \-
  313. Xsuppose the address you have is ihnp4!ihnss!warren@Berkeley, and you
  314. Xare on host rlgvax which uses seismo as an ARPANET gateway.  You must
  315. Xsend to seismo!ihnp4!ihnss!warren@Berkeley, which is not only pretty
  316. Xhard to read, but when the recipient tries to reply, it will have no
  317. Xidea where the break in the address between the two UUCP pieces
  318. Xoccurs.  An ARPANET site routing across the UUCP world to somebody's
  319. XEthernet using domains locally will have to send an address something
  320. Xlike ``xxx@Berkeley.ARPA'' to get it to UUCP, then
  321. X``ihnp4!decvax!island!yyy'' to get it to the other ethernet, then
  322. X``sam@csvax.ISLAND'' to get it across their ethernet.  The single address
  323. Xwould therefore be ihnp4!decvax!island!sam@csvax.ISLAND@Berkeley.ARPA,
  324. Xwhich is too much to ask any person or mailer to understand.  It's even
  325. Xworse: gateways have to deal with ambiguous names like
  326. Xihnp4!mark@Berkeley, which can be parsed either ``(ihnp4!mark)@Berkeley''
  327. Xin accordance with the ARPANET conventions, or ``ihnp4!(mark@Berkeley)''
  328. Xas the old UUCP would.
  329. X.P
  330. XAnother very important reason for using domains is that your mailing
  331. Xaddress becomes absolute instead of relative.  It becomes possible to
  332. Xput your electronic address on your business card or in your signature
  333. Xfile without worrying about writing six different forms and fifteen
  334. Xhosts that know how to get to yours.  It drastically simplifies the job
  335. Xof the reply command in your mail program, and automatic reply code in
  336. Xthe netnews software.
  337. X.H 1 "Further Information"
  338. X.P
  339. XFor further information, some of the basic ARPANET reference documents
  340. Xare in order.  These can often be found posted to Usenet, or available
  341. Xnearby.  They are all available on the ARPANET on host NIC via FTP with
  342. Xlogin ANONYMOUS, if you have an ARPANET login.  They can also be
  343. Xordered from the Network Information Center, SRI International,
  344. XMenlo Park, California, 94025.
  345. X.DS
  346. XRFC819  The Domain Naming Convention for Internet User Applications
  347. XRFC821  Simple Mail Transfer Protocol
  348. XRFC822  Standard for the Format of ARPANET Text Messages
  349. XRFC881  The Domain Names Plan and Schedule
  350. X.DE
  351. X.nf
  352. X#
  353. X# @(#)domain.mm    2.1 smail 12/14/86
  354. X#
  355. @//E*O*F doc/domain.mm//
  356. if test 19036 -ne "`wc -c <'doc/domain.mm'`"; then
  357.     echo shar: error transmitting "'doc/domain.mm'" '(should have been 19036 characters)'
  358. fi
  359. fi # end of overwriting check
  360. echo shar: extracting "'doc/paths.8'" '(2859 characters)'
  361. if test -f 'doc/paths.8' ; then 
  362.   echo shar: will not over-write existing file "'doc/paths.8'"
  363. else
  364. sed 's/^X//' >doc/paths.8 <<'@//E*O*F doc/paths.8//'
  365. X.TH PATHS 8
  366. X.tr ~
  367. X.SH NAME
  368. Xpaths \- smail routing database
  369. X.SH DESCRIPTION
  370. XThe
  371. X.I paths
  372. Xfile is the routing database for
  373. X.IR smail .
  374. XEach line of the file provides routing information
  375. Xto either a host or to a domain.  Each line should
  376. Xhave either two or three tab (ascii~0x9) separated fields.
  377. XThe format of each line in the paths file is:
  378. X.tr ~
  379. X.sp
  380. X.ce
  381. X\fIkey~~route~~~[cost]\fP
  382. X.sp
  383. XThe
  384. X.I key
  385. Xfield is the key on which searches are performed.
  386. XTypically this is either a UUCP host name or a domain name.
  387. X.I smail
  388. Xuses a binary search algorithm when searching the database,
  389. Xso the keys must be sorted in ascending order.
  390. XCase is ignored when searching, so the keys should be converted
  391. Xto lower case before sorting (see
  392. X.IR lcase (8)
  393. Xand
  394. X.IR pathproc (8)).
  395. X.B Warning:
  396. XThere is a bug in
  397. X.I sort -f,
  398. Xso don't use it.  Convert the keys to lower case, and then sort.
  399. X.PP
  400. XThe
  401. X.I route
  402. Xfield is a "printf" string that details the route that mail to the
  403. X.I key
  404. Xshould take.
  405. XSee
  406. X.I pathalias
  407. Xdocumentation for details.
  408. X.PP
  409. XThe optional
  410. X.I cost
  411. Xfield is used by
  412. X.I smail
  413. Xto determine whether to simply queue outbound
  414. XUUCP mail, or to attempt immediate delivery
  415. X(usually by invoking
  416. X.IR uucico ).
  417. XIf the cost field is present, and the value is at or below
  418. X.IR smail "'s"
  419. X.I queueing threshold
  420. Xthen the mail will be queued and an attempt at immediate delivery
  421. Xwill be made.  This will speed mail delivery between hosts who
  422. Xenjoy a cheap uucp link, like a hardwired line or some other
  423. Xlow cost transport medium, while allowing mail sent over more
  424. Xexpensive media to accumulate before transmission.
  425. XIf the field is absent, the cost defaults to a value
  426. Xabove the
  427. X.I queueing threshold.
  428. XThe default value for the queueing threshold is equal to the pathalias
  429. Xcost DEDICATED+LOW.  Thus, direct links with cost DEDICATED+LOW or less
  430. Xwill see immediate delivery, while the others are queued for later delivery.
  431. X.SH EXAMPLE
  432. XHere's a sample paths file for a small host, like a pc, that doesn't
  433. Xwant to maintain complete routing information.  It illustrates
  434. Xmost of the aspect of the
  435. X.I paths
  436. Xfile.  Assme that the pc's name is
  437. X.I mypc,
  438. Xand that it's in domain
  439. X.I .mydomain.
  440. XAlso, assume that it has a dedicated link to
  441. Xa smart host named
  442. X.I bighub,
  443. Xand that
  444. X.IR bighub 's
  445. Xadministrator has given
  446. X.I mypc
  447. X.B permission
  448. Xto use
  449. X.I bighub
  450. Xas a mail relay.
  451. XLastly, assume that
  452. X.I mypc
  453. Xhas a dialed on demand link to another computer named
  454. X.I friend.
  455. X.nf
  456. X.sp
  457. X.in +5
  458. X\fIpathalias\fP input
  459. X.sp
  460. X mypc =    .mypc.mydomain
  461. X mypc friend(DEMAND), bighub(DEDICATED)
  462. X smart-host = bighub
  463. X.sp
  464. X\fIpaths\fP file produced by \fIpathalias -c inputfile|pathproc\fP
  465. X.sp
  466. X .mypc.mydomain    %s    0
  467. X bighub    bighub!%s    95
  468. X friend    friend!%s    300
  469. X mypc    %s    0
  470. X smart-host    bighub!%s    95
  471. X.in
  472. X.sp
  473. X.fi
  474. X.SH SEE ALSO
  475. Xpathalias - by Peter Honeyman
  476. X.br
  477. Xsmail(8), lcasep(8), pathproc(8)
  478. X.SH VERSION
  479. X@(#)paths.8    2.1 smail 12/14/86
  480. @//E*O*F doc/paths.8//
  481. if test 2859 -ne "`wc -c <'doc/paths.8'`"; then
  482.     echo shar: error transmitting "'doc/paths.8'" '(should have been 2859 characters)'
  483. fi
  484. fi # end of overwriting check
  485. echo shar: extracting "'doc/smail.8'" '(8914 characters)'
  486. if test -f 'doc/smail.8' ; then 
  487.   echo shar: will not over-write existing file "'doc/smail.8'"
  488. else
  489. sed 's/^X//' >doc/smail.8 <<'@//E*O*F doc/smail.8//'
  490. X.TH SMAIL 8
  491. X.SH NAME
  492. Xsmail, rmail \- UUCP mailer with routing
  493. X.SH SYNOPSIS
  494. X.B smail
  495. X[ options ] address ...
  496. X.br
  497. X.B rmail
  498. X[ options ] address ...
  499. X.SH DESCRIPTION
  500. XThe
  501. X.I smail/rmail
  502. Xprogram replaces
  503. X.IR /bin/rmail (1)
  504. Xto become the UUCP mail transport mechanism.
  505. XThey are links to the same executable.
  506. X.I rmail
  507. Xreceives mail from UUCP,
  508. X.I smail
  509. Xintroduces mail into UUCP.
  510. X.PP
  511. X.I smail/rmail
  512. Xcan work with or without
  513. X.IR sendmail (8),
  514. Xor another intelligent mail system.
  515. XFor hosts with just
  516. X.IR /bin/mail (1),
  517. X.I smail/rmail
  518. Xsubsumes some of the functions of
  519. X.I sendmail,
  520. Xand hands only local mail to
  521. X.I /bin/mail.
  522. XFor hosts with
  523. X.I sendmail,
  524. X.I smail/rmail
  525. Xcan act as UUCP front and back ends to
  526. X.I sendmail,
  527. Xallowing
  528. X.I sendmail
  529. Xto process all mail through the host.
  530. XAs distributed, 'bang' mail that is not bound for a local
  531. Xrecipient will be passed directly to
  532. X.I uux
  533. Xwithout calling
  534. X.I sendmail.
  535. X.PP
  536. XTo varying degrees,
  537. X.I smail/rmail
  538. Xautomatically routes the addresses it processes.
  539. X.I smail/rmail
  540. Xmost often routes domain style addresses (i.e. user@domain), producing
  541. Xa UUCP path (i.e. host!address) or a local address (i.e. user), but it can
  542. Xalso reroute explicit UUCP paths.
  543. X.SH OPTIONS
  544. X.TP
  545. X.B \-d
  546. XBe verbose and don't invoke other mailers.
  547. X.TP
  548. X.B \-v
  549. XBe verbose, but still invoke other mailers.
  550. X.TP
  551. X.BI \-h " hostname"
  552. XSet hostname.  The default is configuration dependent, but usually provided
  553. Xby a system call such as
  554. X.IR gethostname (2)
  555. Xor
  556. X.IR uname (2).
  557. X.TP
  558. X.BI \-H " hostdomain"
  559. Xset hostdomain.  The default is configuration dependent.
  560. X.TP
  561. X.BI \-p " pathfile"
  562. XSet path database file name if not /usr/lib/uucp/paths.
  563. X.TP
  564. X.BI \-a " aliasfile"
  565. XFor sites without sendmail, set alias database file name if not in /usr/lib/aliases.
  566. X.TP
  567. X.BI \-q " number"
  568. XTake
  569. X.I number
  570. Xas the queueing threshold.
  571. XWhen routing mail (
  572. X.I -r, -R,
  573. Xor domain addressed mail
  574. X) to a given host, if the cost listed in the
  575. X.I paths
  576. Xfile is less than the queueing threshold, then the mail
  577. Xwill be sent immediately.  This overrides the default threshold
  578. X(see QUEUECOST in defs.h) of DEDICATED+LOW.
  579. X.TP
  580. X.BI \-u " uuxflags"
  581. XUse
  582. X.I uuxflags
  583. Xas the flags passed to uux for remote mail.
  584. XThis overrides any of the default values and other queueing strategies.
  585. X.TP
  586. X.B \-r
  587. XRoute the first component of a UUCP path (host!address) in addition to routing
  588. Xdomain addresses (user@domain).
  589. X.TP
  590. X.B \-R
  591. XReroute UUCP paths, trying successively larger righthand substrings
  592. Xof a path until a component is recognized.
  593. X.TP
  594. X.B \-l
  595. XInstead of routing a domain address, send it to the local mailer for
  596. Xprocessing.  Normally, only local addresses go to the local mailer.
  597. X.TP
  598. X.B \-L
  599. XSend all addresses to the local mailer for processing, including UUCP paths.
  600. X.PP
  601. XMost of the flags are also compile time options, since
  602. X.I uux
  603. Xdoes not normally invoke
  604. X.I rmail
  605. Xwith the desired flags.
  606. X.I smail
  607. Xresets any preset
  608. X.B -l
  609. Xor
  610. X.B -L
  611. Xflags.
  612. X.B -l
  613. Xflag causes 
  614. X.B rmail
  615. Xto send all domain addresses through the local mailer,
  616. Xto process addresses for non UUCP domains.
  617. XThe
  618. X.B -L
  619. Xflag causes
  620. X.B rmail
  621. Xto send even explicit UUCP paths through the local mailer,
  622. Xpresumably to make use of other transport mechanisms.
  623. XIn both cases, rmail defers any routing until smail gets hold it.
  624. X.SH ADDRESSES
  625. X.I smail/rmail
  626. Xunderstands "user@domain" to be a domain address, "host!address" to be a
  627. XUUCP path, and anything else to be a local address.
  628. X.PP
  629. XBecause hostile
  630. X.I rmail's
  631. Xunpredictably interpret mixed UUCP/domain addresses,
  632. X.I smail/rmail
  633. Xunderstands "domain!user" to be a domain address, and generates
  634. X"path!domain!user" when mailing to a cognate
  635. X.I smail/rmail
  636. Xhost.
  637. XTo distinguish domain "domain!user" from UUCP "host!address", "domain"
  638. Xcontains at least one (1) period.
  639. XUnlike the old
  640. X.I /bin/rmail,
  641. X.I smail/rmail
  642. Xgives precedence to @ over ! when parsing mixed addresses,
  643. Xthus a!b@c is parsed as (a!b)@c, rather than a!(b@c).
  644. X.SH ROUTING
  645. XBecause
  646. X.I smail/rmail
  647. Xis the UUCP transport mechanism, it can only effect delivery on UUCP paths 
  648. Xand local addresses; domain addresses require resolution into UUCP paths or
  649. Xlocal addresses.  
  650. XTo resolve a domain address,
  651. X.I smail/rmail
  652. Xfinds a route to the most specific part of the domain specification listed
  653. Xin the routing table.
  654. XTwo degrees of resolution can occur:
  655. X.RS
  656. X.PP
  657. XFull resolution:
  658. X.I smail/rmail
  659. Xfinds a route for the entire domain specification, and tacks the user
  660. Xspecification onto the end of the UUCP path.
  661. XThe address can also fully resolve to a local address (the UUCP path is null).
  662. X.PP
  663. XPartial resolution:
  664. X.I smail/rmail
  665. Xfinds a route for only righthand part of the domain specification, so it 
  666. Xtacks the complete address (in the form domain!user) onto the end of the 
  667. XUUCP path.
  668. XSince this syntax is not widely understood, UUCP gateways listed in
  669. Xthe path database must install new UUCP software, either
  670. X.I smail/rmail
  671. Xor new
  672. X.I sendmail
  673. Xconfiguration files (or both).
  674. X.RE
  675. X.PP
  676. XIt is an error if a partially resolved address routes to the local host 
  677. X(a null UUCP path), since according to the routing table, the local
  678. Xhost is responsible for resolving the address more fully.
  679. X.PP
  680. XThe
  681. X.B -r
  682. Xflag causes
  683. X.I smail/rmail
  684. Xto attempt to route the first component of a UUCP path, probably so it
  685. Xcan impress people with how many UUCP hosts it knows.
  686. XIf this fails, it passes the unrouted address to
  687. X.I uux,
  688. Xin case the path database is not complete.
  689. XThe 
  690. X.B -R
  691. Xflag causes
  692. X.I smail/rmail
  693. Xto take a UUCP path and route the rightmost component of the path (save
  694. Xthe user name) possible.
  695. XThis is mostly for hosts that have very up-to-date routing tables.
  696. X.PP
  697. XIf a route cannot be discerned from the available routing database,
  698. Xthen one more attempt to route the mail is made by searching for an
  699. Xentry in the database for a route to a
  700. X.I smart-host.
  701. XIf this entry exists, then the mail will be forwarded along that route
  702. Xto be delivered.  This allows a host to depend on another, presumably
  703. Xbetter informed, host for delivering its mail.
  704. XThis kind of arrangement should be worked out,
  705. X.I in advance,
  706. Xwith the
  707. X.IR smart-host 's
  708. Xadministrator.
  709. X.PP
  710. XAfter
  711. X.I smail/rmail
  712. Xresolves an address, it reparses it to see if it is now a UUCP path or
  713. Xlocal address.  If the new address turns out to be another
  714. Xdomain address, smail complains because we don't like to resolve more than once.
  715. XThis error occurs when an address partially resolves the local host.
  716. X.PP
  717. XBy default,
  718. X.I smail
  719. Xwill not alter the explicit bang path routing of any mail message.
  720. XIf the stated path is unuseable, (i.e., the next hop host is unknown)
  721. Xthen smail will apply ALWAYS routing, and attempt to deliver the mail
  722. Xto the potentially new address.  If this fails too, then REROUTE routing
  723. Xwill be applied to the address, and another attempt to deliver is made.
  724. XLastly, an attempt to find a path to a better informed host
  725. X.I smart-host
  726. Xwill be made and the mail passed to that host.
  727. X.SH FROMMING
  728. X.I smail/rmail
  729. Xcollapses From_ and >From_ lines to generate a simple from argument, which
  730. Xit can pass to
  731. X.I sendmail
  732. Xor use to create its own "From" line.
  733. XThe rule for fromming is: concatenate each "remote from" host (separating 
  734. Xthem by !'s), and tack on the address on the last From_ line; if that address 
  735. Xis in user@domain format, rewrite it as domain!user; ignore host or
  736. Xdomain if either is simply the local hostname.  It also removes redundant
  737. Xinformation from the From_ line.  For instance:
  738. X.sp
  739. X.ce
  740. X ...!myhost!myhost.mydomain!...
  741. X.sp
  742. Xbecomes
  743. X.sp
  744. X.ce
  745. X ...!myhost!...
  746. X.sp
  747. XLeading occurrences of the local host name are elided as well.
  748. X.PP
  749. X.I smail/rmail
  750. Xgenerates it own From_ line, unless it is feeding
  751. X.I sendmail,
  752. Xwhich is happy with the
  753. X.BI -f from
  754. Xargument.
  755. XFor UUCP bound mail,
  756. X.I smail/rmail
  757. Xgenerates a "remote from hostname", where hostname is the UUCP hostname
  758. X(not the domain name), so that From_ can indicate a valid UUCP path, leaving
  759. Xthe sender's domain address in From:.
  760. X.SH HEADERS
  761. XCertain headers, To:, From:, Date, etc., are required by RFC822.
  762. XIf these headers are absent in locally generated mail, they will
  763. Xbe inserted by smail.  Also, a line of trace information, called
  764. Xa Received: line, will be inserted at the top of each message.
  765. X.SH UNDELIVERABLE MAIL"
  766. XAlthough nobody likes to have a mail message fail to reach its
  767. Xintended destination, it somtimes happens that way.
  768. XMail that is found to be undeliverable
  769. X(i.e., unknown user or unknown host)
  770. Xwill be returned to the sender.
  771. X.SH FILES
  772. X/usr/lib/uucp/paths        ascii path database
  773. X.br
  774. X/usr/lib/aliases        ascii alias database
  775. X.br
  776. X/usr/spool/uucp/mail.log        log of mail
  777. X.br
  778. X/tmp/mail.log            record of mail
  779. X.SH AUTHOR
  780. XChristopher Seiwald
  781. X.br
  782. Xchris@cbosgd.att.com
  783. X.SH SUPPORT
  784. XEnhancements, enhancement requests, trouble reports, etc.,
  785. Xshould be sent to
  786. X.sp
  787. X.ce
  788. Xuucp-problem@cbatt.att.com.
  789. X.sp
  790. X.SH "SEE ALSO"
  791. X.IR uux (1),
  792. X.IR paths (8),
  793. X.IR aliases (8)
  794. X.br
  795. X.IR sendmail (8)
  796. X.br
  797. X.IR binmail (1)
  798. Xon BSD systems only
  799. X.br
  800. X.IR mail (1)
  801. Xon System V systems
  802. X.SH VERSION
  803. X@(#)smail.8    2.2 smail 1/11/87
  804. @//E*O*F doc/smail.8//
  805. if test 8914 -ne "`wc -c <'doc/smail.8'`"; then
  806.     echo shar: error transmitting "'doc/smail.8'" '(should have been 8914 characters)'
  807. fi
  808. fi # end of overwriting check
  809. echo shar: extracting "'doc/rfc976.mm'" '(21687 characters)'
  810. if test -f 'doc/rfc976.mm' ; then 
  811.   echo shar: will not over-write existing file "'doc/rfc976.mm'"
  812. else
  813. sed 's/^X//' >doc/rfc976.mm <<'@//E*O*F doc/rfc976.mm//'
  814. X.nr Hy 0
  815. X.TL
  816. XUUCP Mail Interchange Format Standard
  817. X.AU "Mark R. Horton" "" CB 59443 4276 2C-249 "(cbosgd!mark)"
  818. X.AS 0 10
  819. XThis document defines the standard format for the
  820. Xtransmission of mail messages between machines.  It does not
  821. Xaddress the format for storage of messages on one machine, nor the
  822. Xlower level transport mechanisms used to get the data from one
  823. Xmachine to the next.
  824. XIt represents a standard for conformance by hosts in the UUCP zone.
  825. X.AE
  826. X.MT 4 1
  827. X.H 1 "Status"
  828. X.P
  829. XIn response to the need for maintenance of current information
  830. Xabout the status and progress of various projects in the
  831. XARPA-Internet community, this RFC is issued for the benefit of
  832. Xcommunity members.  The information contained in this document
  833. Xis accurate as of the date of publication, but is subject to
  834. Xchange.  Subsequent RFCs will reflect such changes.
  835. X.P
  836. XDistribution of this memo is unlimited.
  837. X.H 1 "Introduction"
  838. X.P
  839. XThis document is intended to define the standard format for the
  840. Xtransmission of mail messages between machines.  It does not
  841. Xaddress the format for storage of messages on one machine, nor the
  842. Xlower level transport mechanisms used to get the data from one
  843. Xmachine to the next.
  844. XWe assume remote execution of the rmail command (or equivalent)
  845. Xas the UUCP network primitive operation.
  846. X.P
  847. XThe general philosophy is that, if we were to invent a new standard,
  848. Xwe would make ourselves incompatible with existing systems.  There are
  849. Xalready too many (incompatible) standards in the world, resulting
  850. Xin ambiguities such as a!b@c.d which is parsed a!(b@c.d) in the
  851. Xold UUCP world, and (a!b)@c.d in the Internet world.  (Neither
  852. Xstandard allows parentheses, and in adding them we would be compatible
  853. Xwith neither.  There would also be serious problems with the shell and
  854. Xwith the UUCP transport mechanism.)
  855. X.P
  856. XHaving an established, well documented, and extensible family of
  857. Xstandards already defined by the ARPA Internet, we choose to adopt
  858. Xthese standards for the UUCP zone as well.
  859. X(The UUCP zone is that subset of the community connected by UUCP
  860. Xwhich chooses to register with the UUCP project.
  861. XIt represents an administrative entity.)
  862. XWhile the actual
  863. Xtransport mechanism is up to the two hosts to arrange, and might
  864. Xinclude UUCP, SMTP, MMDF, or some other facility, we adopt RFC920
  865. X(domains) and RFC822 (mail format) as UUCP zone standards.  All
  866. Xmail transmitted between systems should conform to those two standards.
  867. XIn addition, should the ARPA community change these standards at a
  868. Xlater time, we intend to change our standards to remain compatible with theirs,
  869. Xgiven a reasonable time to upgrade software.
  870. X.P
  871. XThis document specifies an interpretation of RFC822 and RFC920 in
  872. Xthe UUCP world.
  873. XIt shows how the envelope should be encoded,
  874. Xand how UUCP routing is accomplished in an environment of mixed
  875. Ximplementations.
  876. X.H 1 "Basics"
  877. XMessages can be divided into two parts: the envelope and the message.
  878. XThe envelope contains information needed by the mail transport services,
  879. Xand the message contains information useful to the sender and receiver.
  880. XThe message is divided into the header and the body.
  881. XSometimes an intermediate host will add to the message (e.g. a Received
  882. Xline) but, except in the case of a gateway which must translate formats,
  883. Xit is not expected that intermediate hosts will change the message itself.
  884. XIn the UUCP world, the envelope consists of the ``destination addresses''
  885. X(normally represented as the argument or arguments to the rmail command)
  886. Xand the ``source path'' (normally represented in one or more lines at the
  887. Xbeginning of the message beginning either ``From '' or ``>From '', sometimes
  888. Xcalled ``From_ lines''.)  The RFC822 header lines (including ``From:''
  889. Xand ``To:'') are part of the message, as is the text of the message body itself.
  890. X.P
  891. XUUCP uses short host names, such as ``ucbvax'',
  892. Xat and below the transport layer.
  893. XWe refer to these names as ``6 letter names'', because all implementations
  894. Xof UUCP consider at least the first 6 letters significant.
  895. X(Some consider the first 7 or the first 14 significant, but we must use
  896. Xthe lowest common denominator.)
  897. XUUCP names may be longer than 6 characters, but all such names much be
  898. Xunique in their first 6 letters.
  899. XRFC 920 domain names, such as ``ucbvax.Berkeley.EDU'',
  900. Xare called ``domain names.''
  901. XThe two names are different.
  902. XUpper and lower case are usually considered different in 6 letter names,
  903. Xbut are considered equivalent in domain names.
  904. XNames such as ``ucbvax.UUCP'',
  905. Xconsisting of a 6 letter name followed by ``.UUCP'',
  906. Xpreviously were domain style references to a host with a given 6 letter name.
  907. XSuch names are being phased out in favor of organizational domain names
  908. Xsuch as ``ucbvax.Berkeley.EDU''
  909. X.H 2 "Hybrid Addresses"
  910. XThere are (among others) two major kinds of mailing address syntax
  911. Xused in the UUCP world.  The a!b!c!user (``bang paths'') is used by
  912. Xolder UUCP software to explicitly route mail to the destination.
  913. XThe user@domain (``domain'') syntax is used in conformance to RFC 822.
  914. XUnder most circumstances, it is possible to look at a given address
  915. Xand determine which sort of address it is.
  916. XHowever, a hybrid address with a ! to the left of an @, such as a!b@c,
  917. Xis ambiguous: it could be interpreted as (a!b)@c.d or a!(b@c.d).
  918. XBoth interpretations can be useful.
  919. XThe first interpretation is required by RFC 822, the second is a de-facto
  920. Xstandard in the UUCP software.
  921. X.P
  922. XBecause of the confusion surrounding hybrid addresses, we recommend that
  923. Xall transport layer software avoid the use of hybrid addresses at all times.
  924. XA pure bang syntax can be used to disambiguate, being written
  925. Xc.d!a!b in the first case above, and a!c.d!b in the second.
  926. XWe recommend that all implementations use this ``bang domain'' syntax
  927. Xunless they are sure of what is running on the next machine.
  928. X.P
  929. XIn conformance with RFC 822 and the AT&T Message Transfer Architecture,
  930. Xwe recommand that any host that accepts hybrid addresses apply the (a!b)@c.d
  931. Xinterpretation.
  932. X.H 2 "Transport"
  933. XSince SMTP is not available to much of the UUCP domain, we define the
  934. Xmethod to be used for ``remote execution'' based transport mechanisms.
  935. XThe command to be ``remotely executed'' should read
  936. X.DS I
  937. Xrmail user@domain ...
  938. X.DE
  939. Xwith the message on the standard input of the command.  The ``user@domain''
  940. Xargument must conform to RFC920 and RFC822.  More than one address
  941. Xargument is allowed, in order to save transmission costs for multiple
  942. Xrecipients of the same message.
  943. X.P
  944. XAn alternative form that may be used is
  945. X.DS I
  946. Xrmail domain!user
  947. X.DE
  948. Xwhere ``domain'' contains at least one period and no !'s.  This is to
  949. Xbe interpreted exactly the same as user@domain, and can be used to
  950. Xtransport a message across old UUCP hosts without fear that they
  951. Xmight change the address.  The ``user'' string can contain any characters
  952. Xexcept ``@''.  This character is forbidden because it is
  953. Xunknown what an intermediate host might do to it.
  954. X(It is also recommended that the ``%'' character be avoided, since
  955. Xsome hosts treat ``%'' as a synonym for ``@''.)
  956. XHowever, to
  957. Xroute across hosts that don't understand domains, the following
  958. Xis possible
  959. X.DS I
  960. Xrmail a!b!c!domain!user
  961. X.DE
  962. XA ``domain'' can be distinguished from a 6 letter UUCP site name
  963. Xbecause a domain will contain at least one period.  (In the case
  964. Xof single level domains with no periods, a period should be added
  965. Xto the end, e.g. Mark.Horton@att becomes ``att.!Mark.Horton''.  A
  966. Xtranslator from ! to @ format should remove a trailing dot at the
  967. Xend of the domain, if one is present.)
  968. XWe don't expect this to happen, except for local networks
  969. Xusing addresses like ``user@host''.
  970. X.P
  971. XA simple implementation can always generate domain!user syntax
  972. X(rather than user@domain) since it is safe to assume that gateways
  973. Xare class 3.
  974. X.H 2 "Batch SMTP"
  975. XStandard conforming implementations may optionally support a protocol
  976. Xcalled ``Batch SMTP''.
  977. XSMTP (Simple Mail Transfer Protocol) is the ARPANET standard mail
  978. Xtransfer protocol.
  979. XIt is also used on BITNET and Mailnet.
  980. XWhile SMTP was designed to be interactive, it is possible to batch up
  981. Xa series of commands and send them off to a remote machine for batch execution.
  982. XThis is used on BITNET, and is appropriate for UUCP.
  983. XOne advantage to BSMTP is that the UNIX shell does not get involved
  984. Xin the interpretation of messages, so it becomes possible to include
  985. Xspecial characters such as space and parentheses in electronic messages.
  986. X(Such characters are expected to be popular in X.400 addresses.)
  987. X.P
  988. XTo support BSMTP on UNIX, a conforming host should arrange that mail to
  989. Xthe user ``b-smtp'' is interpreted as Batch SMTP commands.
  990. X(We use b-smtp instead of bsmtp because bsmtp might conflict with
  991. Xa login name.)
  992. XSince many mail systems treat lines consisting of a single period
  993. Xas an ``end of file'' flag, and since SMTP uses the period as a
  994. Xrequired end of file flag, and to strip off headers, we put an
  995. Xextra ``#'' at the beginning of each BSMTP line.
  996. XOn a sendmail system, an easy way to implement this is to include the alias
  997. X.DS I
  998. Xb-smtp: "|egrep '^#' | sed 's/^#//' | /usr/lib/sendmail -bs"
  999. X.DE
  1000. Xwhich will feed the commands to an SMTP interpreter.
  1001. XA better solution would appropriately check for errors and send back an
  1002. Xerror message to the sender.
  1003. X.P
  1004. XAn example BSMTP message from seismo.CSS.GOV to cbosgd.ATT.COM is shown here.
  1005. XThis sample is the file shipped over the UUCP link for in put to the
  1006. Xcommand ``rmail b-smtp''.
  1007. XNote that the RFC 822 message is between the DATA line and the period line.
  1008. XThe envelope information is passed in the MAIL FROM and RCPT TO lines.
  1009. XThe name of the sending system is in the HELO line.
  1010. XThe actual envelope information (above the # lines) is ignored
  1011. Xand need not be present.
  1012. X.DS I
  1013. XFrom foo!bar Sun Jan 12 23:59:00 1986 remote from seismo
  1014. XDate: Tue, 18 Feb 86 13:07:36 EST
  1015. XFrom: mark@ucbvax.Berkeley.EDU
  1016. XMessage-Id: <8602181807.AA10228@mark@ucbvax.Berkeley.EDU>
  1017. XTo: b-smtp@cbosgd.ATT.COM
  1018. X
  1019. X#HELO seismo.CSS.GOV
  1020. X#MAIL FROM:<mark@ucbvax.Berkeley.EDU>
  1021. X#RCPT TO:<mark@cbosgd.ATT.COM>
  1022. X#DATA
  1023. X#Date: Tue, 18 Feb 86 13:07:36 EST
  1024. X#From: mark@ucbvax.Berkeley.EDU
  1025. X#Message-Id: <8602181807.AA10228@mark@ucbvax.Berkeley.EDU>
  1026. X#To: mark@cbosgd.ATT.COM
  1027. X#
  1028. X#This is a sample message.
  1029. X#.
  1030. X#QUIT
  1031. X
  1032. X.DE
  1033. X.H 2 "Envelope"
  1034. X.P
  1035. XThe standard input of the command should begin with a single line
  1036. X.DS I
  1037. XFrom domain!user date remote from system
  1038. X.DE
  1039. Xfollowed immediately by the RFC822 format headers and body of the message.
  1040. XIt is possible that there will be additional From_ lines
  1041. Xpreceding this line - these lines may be added, one line for each
  1042. Xsystem the message passes through.  It is also possible that the
  1043. X``system'' fields will be stacked into a single line, with many !'s in the
  1044. X``user'' string.  The ``>'' character may precede the ``From''.  In general,
  1045. Xthis is the ``envelope'' information, and should follow the same conventions
  1046. Xthat previous UUCP mail has followed.  The primary difference is that,
  1047. Xwhen the system names are stacked up, if previously the result would
  1048. Xhave been a!b!c!mysys!me, the new result will be a!b!c!mysys!domain!me,
  1049. Xwhere domain will contain at least one period, and ``mysys'' is often the
  1050. X6 letter UUCP name for the same system named by ``domain''.
  1051. XIf the ``domain!'' is redundant,
  1052. Xit may be omitted from the envelope,
  1053. Xeither in the source path or in the destination address.
  1054. X.P
  1055. XThe receiving system may discard extra ``From_'' lines if it folds
  1056. Xthe information into a a single From_ line. It passes the
  1057. Xpath!domain!user along as the ``envelope'' information containing the address
  1058. Xof the sender of the message, and possibly preserves the forwarding date and
  1059. Xsystem in a newly generated header line, such as Received or Sent-By.
  1060. X(Adding Received using this information is discouraged, since the line
  1061. Xappears to have been added on a different system than the one actually
  1062. Xadding it.
  1063. XThat other system may have actually included a Received line too!
  1064. XThe Sent-By line is similar to Received, but the date need not be
  1065. Xconverted into RFC 822 format, and the line is not claimed to have
  1066. Xbeen added by the system whose name is mentioned.)
  1067. X.P
  1068. XIf the receiving system passes the message along to another system,
  1069. Xit will add a ``From_'' line to the front, giving the same user@domain
  1070. Xaddress for the sender, and its own name for the system.  If the
  1071. Xreceiving system stores the message in a local mailbox, it is recommended
  1072. Xthat a single ``From_'' line be generated at the front of the message,
  1073. Xkeeping the date (in the same format, since certain mail reading
  1074. Xprograms are sensitive to this format),
  1075. Xand not using the ``remote from system'' syntax.
  1076. X.P
  1077. XNote - if an intermediate system adds
  1078. Xtext such as ``system!'' to the front of a ``user@domain'' syntax address,
  1079. Xeither in the envelope or the body,
  1080. Xthis is a violation of this standard and of RFC 822.
  1081. X.H 2 "Routing"
  1082. XIn order to properly route mail, it is sometimes necessary to know what
  1083. Xsoftware a destination or intermediate machine is running, or what
  1084. Xconventions it follows.  We have tried to minimize the amount of this
  1085. Xinformation that is necessary, but the support of subdomains may require
  1086. Xthat different methods are used in different situations.  For purposes
  1087. Xof predicting the behavior of other hosts, we divide hosts into
  1088. Xthree classes.  These classes are:
  1089. X.VL 10
  1090. X.LI "Class 1"
  1091. Xold-style UUCP ! routing only.  We assume that the host understands
  1092. Xlocal user names:
  1093. X.DS I
  1094. Xrmail user
  1095. X.DE
  1096. Xand bang paths
  1097. X.DS I
  1098. Xrmail host1!host2!user
  1099. X.DE
  1100. Xbut we assume nothing more about the host.  If we have no information about
  1101. Xa host, we can treat it as class 1 with no problems, since we make no
  1102. Xassumptions about how it will handle hybrid addresses.
  1103. X.LI "Class 2"
  1104. XOld style UUCP ! routing, and 4.2BSD style domain parsing.  We
  1105. Xassume the capabilities of class 2, plus the ability to understand
  1106. X.DS I
  1107. Xrmail user@domain
  1108. X.DE
  1109. Xif the ``domain'' is one outside the UUCP zone which the host knows about.
  1110. XClass 2 hosts do not necessarily understand domain!user or have routers.
  1111. XHosts in
  1112. Xnon-UUCP RFC920 domains are considered class 2, even though they may
  1113. Xnot understand host!user.
  1114. X.LI "Class 3"
  1115. XAll class 1 and 2 features are present.  In addition, class 3
  1116. Xhosts must be able to route UUCP mail for hosts that are not immediately
  1117. Xadjacent and also understand the syntax
  1118. X.DS I
  1119. Xrmail domain!user
  1120. X.DE
  1121. Xas described above.
  1122. XAll gateways into UUCP must be class 3.
  1123. X.LE
  1124. X.P
  1125. XThis document describes what class 3 hosts must be able to process.
  1126. XClasses 1 and 2 already exist, and will continue to exist for a long
  1127. Xtime, but are viewed as ``older systems'' that may eventually be upgraded
  1128. Xto class 3 status.
  1129. X.H 1 "Algorithm"
  1130. X.P
  1131. XThe algorithm for delivering a message to an address ``user@domain''
  1132. Xover UUCP links can be summarized as follows:
  1133. X.AL a
  1134. X.LI
  1135. XIf the address is actually of the form @domain1:user@domain2,
  1136. Xthe ``domain'' used for the remainder should be ``domain1'' instead
  1137. Xof ``domain2'', and the bang form reads domain1!domain2!user.
  1138. X.LI
  1139. XDetermine d: the most specific part of ``domain'' that is recognized locally.
  1140. XThis part will be a suffix of ``domain''.  This can be done by scanning
  1141. Xthrough a table with entries that go from specific to general, comparing
  1142. Xentries with ``domain'' to see if the entries are at the tail of ``domain''.
  1143. XFor example, with the address ``mark@osgd.cb.att.com'', if the local
  1144. Xhost recognizes ``uucp'' and ``att.com'', d would be ``att.com''.  
  1145. XThe final entry in the table will be the null string, matching any
  1146. Xcompletely unrecognized domain.
  1147. X.LI
  1148. XLook in the found table entry for g: the name of the ``gateway'', and
  1149. Xfor r: a UUCP !-style route to reach g.  G is not necessarily directly
  1150. Xconnected to the local host, but should be viewed as a gateway into
  1151. Xthe d domain.  (The values of g and r for a given d may be different
  1152. Xon different hosts, although g will often be the same.)
  1153. X.LI
  1154. XLook at the beginning of r to find the ``next hop'' host n.  N will
  1155. Xalways be directly connected to the local host.
  1156. X.LI
  1157. XDetermine, if possible, the class of g and n.
  1158. X.LI
  1159. XCreate an appropriate destination string s to be interpreted by n.
  1160. X(See below.)
  1161. X.LI
  1162. XPass the message off to n with destination information s.
  1163. X.LE
  1164. X.P
  1165. XIn an environment with other types of networks that do not use UUCP !
  1166. Xparsing, the table will probably contain additional information, such
  1167. Xas which type of link to use.  The path information may be replaced in
  1168. Xother environments by information specific to the network.
  1169. X.P
  1170. XThe first entries in the table mentioned in part (b) are normally very
  1171. Xspecific, and allow well known routes to be constructed directly instead
  1172. Xof routing through the domain tree.  The domain tree should be reserved
  1173. Xfor cases where no better information is available, or where traffic is
  1174. Xvery light, or where the default route is the best available.  If a better
  1175. Xroute is available, that information can be put in the table.  If a host
  1176. Xhas any significant amount of traffic sent to a second host, it is normally
  1177. Xexpected that the two hosts will set up a direct UUCP link and make an
  1178. Xentry in their tables to send mail directly, even if they are in separate
  1179. Xdomains.  Routing tables should be constructed to try to keep paths short
  1180. Xand inexpensive for as much traffic as possible.
  1181. X.P
  1182. XHere are some hints for the construction of the destination string n
  1183. X(step f above.) The ``envelope recipient'' information (the argument(s)
  1184. Xto rmail) may be in either domain ! form (host.com!user) or domain @
  1185. Xform (user@host.com) as long as the sending site is sure the next hop
  1186. Xis class 3.  If the next hop is not class 3, or the sending site is
  1187. Xnot sure, the ! form should be used, if possible, since it is hard
  1188. Xto predict what the next hop would do with a hybrid address.
  1189. X.P
  1190. XIf the gateway is known to be class 3, domain ! form may be
  1191. Xused, but if the sending site is not sure, and the entire destination
  1192. Xstring was matched in the lookup (rather than some parent domain),
  1193. Xthe 6 letter ! form should be used: r!user,
  1194. Xfor example: dumbhost!host!user.
  1195. XIf the gateway appears to actually be
  1196. Xa gateway for a subdomain,
  1197. Xe.g. because a parent domain was matched,
  1198. X(such as the address user@host.gateway.com,
  1199. Xwhere host.gateway.com was not found but gateway.com was)
  1200. Xit can be assumed to be at class 3.
  1201. XThis allows routes such as
  1202. Xdumbhost!domain!host.domain.com!user to be used with a reasonable
  1203. Xdegree of safety.
  1204. XIf a direct link exists to the destination host, the user@domain syntax
  1205. Xor the domain!user syntax may be used.
  1206. X.P
  1207. XAll hosts conforming to this standard are class 3, and all
  1208. Xsubdomain gateways must be class 3 hosts.
  1209. X.H 1 "Example"
  1210. X.P
  1211. XSuppose host A.D.COM sends mail to host C.D.COM.
  1212. XLet's suppose that the 6 letter names for these hosts are aname and dname,
  1213. Xand that the intermediate host to be routed through has name bname.
  1214. X.P
  1215. XThe user on A types
  1216. X.DS I
  1217. Xmail user@c.d.com
  1218. X.DE
  1219. XThe user interface creates a file such as
  1220. X.DS I
  1221. XDate:  9 Jan 1985   8:39 EST
  1222. XFrom: myname@A.D.COM (My Name)
  1223. XSubject: sample message
  1224. XTo: user@c.d.com
  1225. X
  1226. XThis is a sample message
  1227. X.DE
  1228. Xand passes it to the transport mechanism with a command such as
  1229. X.DS I
  1230. Xsendmail user@c.d.com < file
  1231. X.DE
  1232. XThe transport mechanism looks up a route to c.d.com.
  1233. XIt does not find c.d.com in its database, so it
  1234. Xlooks up d.com, and finds that the
  1235. Xpath is bname!dname!%s, and that c.d.com is a class 3 host.
  1236. XPlugging in c.d.com!user, it gets the path bname!dname!c.d.com!user.
  1237. X(If it had found c.d.com with path bname!cname!%s, it would have
  1238. Xomitted the domain from the resulting path: bname!cname!user, since
  1239. Xit is not sure whether the destination host is class 1, 2, or 3.)
  1240. X.P
  1241. XIt prepends a From_ line and passes it to uux:
  1242. X.DS I
  1243. Xuux - bname!rmail dname!c.d.com!user < file2
  1244. X.DE
  1245. Xwhere file2 contains
  1246. X.DS I
  1247. XFrom A.D.COM!user Wed Jan  9 12:43:35 1985 remote from aname
  1248. XDate:  9 Jan 1985   8:39 EST
  1249. XFrom: myname@A.D.COM (My Name)
  1250. XSubject: sample message
  1251. XTo: user@c.d.com
  1252. X
  1253. XThis is a sample message
  1254. X
  1255. X.DE
  1256. X(Note the blank line at the end of the message - at least one blank
  1257. Xline is required.)
  1258. XThis results in the command
  1259. X.DS I
  1260. Xrmail dname!c.d.com!user
  1261. X.DE
  1262. Xrunning on B.  B prepends its own from line and passes the mail along:
  1263. X.DS I
  1264. Xuux - dname!rmail c.d.com!user < file3
  1265. X.DE
  1266. Xwhere file3 contains
  1267. X.DS I
  1268. XFrom nuucp Wed Jan  9 12:43:35 1985 remote from bname
  1269. X>From A.D.COM!user Wed Jan  9 11:21:48 1985 remote from aname
  1270. XDate:  9 Jan 1985   8:39 EST
  1271. XFrom: myname@A.D.COM (My Name)
  1272. XSubject: sample message
  1273. XTo: user@c.d.com
  1274. X
  1275. XThis is a sample message
  1276. X
  1277. X.DE
  1278. X.P
  1279. XThe command
  1280. X.DS I
  1281. Xrmail c.d.com!user
  1282. X.DE
  1283. Xis run on C, which stacks the From_ lines
  1284. X.DS I
  1285. XFrom bname!aname!A.D.COM!user Wed Jan  9 12:43:35 1985
  1286. XDate:  9 Jan 1985   8:39 EST
  1287. XFrom: myname@A.D.COM (My Name)
  1288. XSubject: sample message
  1289. XTo: user@c.d.com
  1290. X
  1291. XThis is a sample message
  1292. X
  1293. X.DE
  1294. Xand stores the message locally, probably in this same format.
  1295. X.H 1 "Summary"
  1296. X.P
  1297. XHosts conforming to this standard should accept all of the following
  1298. Xforms:
  1299. X.DS I
  1300. X.ta 3i
  1301. Xrmail localuser        (no !%@ in user)
  1302. Xrmail hosta!hostb!user    (no !%@ in user)
  1303. Xrmail user@domain    (only . in domain)
  1304. Xrmail domain!user    (at least 1 . in domain)
  1305. Xrmail domain.!user    (in case domain has no dots)
  1306. X.DE
  1307. X.P
  1308. XThe ``envelope'' portion of the message (``From_'' lines) should
  1309. Xconform to existing conventions, using ! routing.
  1310. XThe ``heading'' portion of the message (the Word: lines such as Date:,
  1311. XFrom:, To:, and Subject:) must conform to RFC822.
  1312. XAll header addresses must
  1313. Xbe in the @ form.  The originating site should ensure that the addresses
  1314. Xconform to 822, since no requirement is placed on forwarding sites or
  1315. Xgateways to transform addresses into legal 822 format.
  1316. X(Such forwarding sites and gateways should NOT, however, change a legal
  1317. X822 address such as user@domain into an illegal 822 address such as
  1318. Xgateway!user@domain, even if forwarding to a class 1 UUCP host.)
  1319. X.nf
  1320. X#
  1321. X# @(#)rfc976.mm    2.1 smail 12/14/86
  1322. X#
  1323. @//E*O*F doc/rfc976.mm//
  1324. if test 21687 -ne "`wc -c <'doc/rfc976.mm'`"; then
  1325.     echo shar: error transmitting "'doc/rfc976.mm'" '(should have been 21687 characters)'
  1326. fi
  1327. fi # end of overwriting check
  1328. echo shar: extracting "'src/patchlevel'" '(12 characters)'
  1329. if test -f 'src/patchlevel' ; then 
  1330.   echo shar: will not over-write existing file "'src/patchlevel'"
  1331. else
  1332. sed 's/^X//' >src/patchlevel <<'@//E*O*F src/patchlevel//'
  1333. XPatch #: 02
  1334. @//E*O*F src/patchlevel//
  1335. if test 12 -ne "`wc -c <'src/patchlevel'`"; then
  1336.     echo shar: error transmitting "'src/patchlevel'" '(should have been 12 characters)'
  1337. fi
  1338. fi # end of overwriting check
  1339. echo shar: extracting "'MANIFEST'" '(1198 characters)'
  1340. if test -f 'MANIFEST' ; then 
  1341.   echo shar: will not over-write existing file "'MANIFEST'"
  1342. else
  1343. sed 's/^X//' >MANIFEST <<'@//E*O*F MANIFEST//'
  1344. X  File Name             Kit #   Description
  1345. X-----------------------------------------------------------
  1346. X MANIFEST                  2   This shipping list
  1347. X doc                       1
  1348. X doc/Contacts              1
  1349. X doc/Domains               1
  1350. X doc/Flow.Diagram          1
  1351. X doc/Install               1
  1352. X doc/Read.Me               1
  1353. X doc/Registry              1
  1354. X doc/Trouble               1
  1355. X doc/aliases.8             1
  1356. X doc/domain.mm             2
  1357. X doc/lcasep.8              1
  1358. X doc/pathproc.8            1
  1359. X doc/paths.8               2
  1360. X doc/rfc920.txt            3
  1361. X doc/rfc976.mm             2
  1362. X doc/smail.8               2
  1363. X src                       1
  1364. X src/Makefile              1
  1365. X src/alias.c               3
  1366. X src/defs.h                3
  1367. X src/deliver.c             4
  1368. X src/getopt.c              3
  1369. X src/getpath.c             3
  1370. X src/headers.c             4
  1371. X src/lcasep.c              3
  1372. X src/main.c                4
  1373. X src/make.cf.sh            4
  1374. X src/map.c                 4
  1375. X src/misc.c                4
  1376. X src/patchlevel            2
  1377. X src/pathproc.sh           3
  1378. X src/resolve.c             4
  1379. X src/smail.prompt          4
  1380. X src/svbinmail.c           4
  1381. X src/sysexits.h            4
  1382. X src/template.cf           5
  1383. @//E*O*F MANIFEST//
  1384. if test 1198 -ne "`wc -c <'MANIFEST'`"; then
  1385.     echo shar: error transmitting "'MANIFEST'" '(should have been 1198 characters)'
  1386. fi
  1387. fi # end of overwriting check
  1388. echo shar: "End of shell archive."
  1389. exit 0
  1390.